//============================================================================================
/**
 * @file	pkthln_clact.c
 * @brief	ポケスロン競技アクター関連
 * @author	Nozomu Saito
 */
//============================================================================================

#include "common.h"
#include "system/arc_tool.h"
#include "system/arc_util.h"
#include "system/clact_util.h"

#include "pkthln_clact.h"

typedef struct PKTHLN_ACT_tag
{
	u16 Use;
	u16 Active;
	CLACT_WORK_PTR	ClActWorkPtr;
	u16 ActCode;
	u16 ResCode;
}PKTHLN_ACT;

typedef struct RES_OBJ_tag
{
	int Code;
	CLACT_U_RES_OBJ_PTR 	ResObjPtrTbl[RESOURCE_NUM];
}RES_OBJ;

typedef struct PKTHLN_CLACT_CNT_tag
{
	int HeapID;
	int AddPoint;

	PKTHLN_ACT_SETUP_PRM	SetupPrm;

	CLACT_SET_PTR 			ClActSet;				// セルアクターセット
	CLACT_U_EASYRENDER_DATA	RendData;				// 簡易レンダーデータ
	CLACT_U_RES_MANAGER_PTR	ResMan[RESOURCE_NUM];		// リソースマネージャ

	RES_OBJ					*ResObjTbl;

	PKTHLN_ACT				*ActPtr;

}PKTHLN_CLACT_CNT;

//--------------------------------------------------------------------------------------------
/**
 * システムアロック
 *
 * @param	inHeapID			ヒープＩＤ
 * @param	inSetupPrm			セットアップパラメータ
 *
 * @return	PKTHLN_CLACT_CNT_PTR	アクターコントローラーポインタ
 */
//--------------------------------------------------------------------------------------------
PKTHLN_CLACT_CNT_PTR PkthlnClAct_Init(const int inHeapID, const PKTHLN_ACT_SETUP_PRM *inSetupPrm)
{
	PKTHLN_CLACT_CNT_PTR cnt_ptr;
	int size;
	int i;
	size = sizeof(PKTHLN_CLACT_CNT);
	cnt_ptr = sys_AllocMemory(inHeapID, size);
	MI_CpuClearFast( cnt_ptr, size);
	cnt_ptr->HeapID = inHeapID;
	cnt_ptr->SetupPrm = (*inSetupPrm);
	cnt_ptr->ResObjTbl = sys_AllocMemory(inHeapID, sizeof(RES_OBJ)*cnt_ptr->SetupPrm.ResCodeMax );
	MI_CpuClear32(cnt_ptr->ResObjTbl, sizeof(RES_OBJ)*cnt_ptr->SetupPrm.ResCodeMax);
	cnt_ptr->ActPtr = sys_AllocMemory(cnt_ptr->HeapID, sizeof(PKTHLN_ACT)*cnt_ptr->SetupPrm.EntryNum);
	MI_CpuClear32(cnt_ptr->ActPtr, sizeof(PKTHLN_ACT)*cnt_ptr->SetupPrm.EntryNum);

	//セルアクター初期化
	cnt_ptr->ClActSet = CLACT_U_SetEasyInit( cnt_ptr->SetupPrm.EntryNum, &cnt_ptr->RendData, cnt_ptr->HeapID );
	//リソースマネージャー初期化
	for(i=0;i<RESOURCE_NUM;i++){	//リソースマネージャー作成
		cnt_ptr->ResMan[i] = CLACT_U_ResManagerInit(cnt_ptr->SetupPrm.ResNum[i], i, cnt_ptr->HeapID);
	}
	return cnt_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * システムの解放
 *
 * @param	cnt_ptr			アクターコントローラーポインタ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_Free(PKTHLN_CLACT_CNT_PTR cnt_ptr)
{
	u8 i;

	for (i=0;i<cnt_ptr->SetupPrm.ResCodeMax;i++){
		// キャラ転送マネージャー破棄
		if (cnt_ptr->ResObjTbl[i].ResObjPtrTbl[CLACT_U_CHAR_RES] != NULL){
			CLACT_U_CharManagerDelete(cnt_ptr->ResObjTbl[i].ResObjPtrTbl[CLACT_U_CHAR_RES]);
		}
		if (cnt_ptr->ResObjTbl[i].ResObjPtrTbl[CLACT_U_PLTT_RES] != NULL){
			// パレット転送マネージャー破棄
			CLACT_U_PlttManagerDelete(cnt_ptr->ResObjTbl[i].ResObjPtrTbl[CLACT_U_PLTT_RES]);
		}
	}

	// キャラ・パレット・セル・セルアニメのリソースマネージャー破棄
	for(i=0;i<RESOURCE_NUM;i++){
		CLACT_U_ResManagerDelete(cnt_ptr->ResMan[i]);
	}
	// セルアクターセット破棄
	CLACT_DestSet(cnt_ptr->ClActSet);

	sys_FreeMemoryEz(cnt_ptr->ActPtr);
	sys_FreeMemoryEz(cnt_ptr->ResObjTbl);
	sys_FreeMemoryEz(cnt_ptr);
}

//--------------------------------------------------------------------------------------------
/**
 * コードセット
 *
 * @param	cnt_ptr		アクターコントローラーポインタ
 * @param	inIndex		インデックス
 * @param	inCode		コード
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetResObjCode(PKTHLN_CLACT_CNT_PTR cnt_ptr, const int inIndex, const u8 inCode)
{
	GF_ASSERT( inIndex < cnt_ptr->SetupPrm.ResCodeMax );
	cnt_ptr->ResObjTbl[inIndex].Code = inCode;
}

//--------------------------------------------------------------------------------------------
/**
 * キャラセット
 *
 * @param	cnt_ptr		アクターコントローラーポインタ
 * @param	inArcID		アクターID
 * @param	inArcIdx	アーカイブインデックス
 * @param	inResCode	リソースコード
 * @param	inVramType	VRAMタイプ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetChar(	PKTHLN_CLACT_CNT_PTR cnt_ptr,
							const int inArcID, const int inArcIdx,
							const int inResCode, const int inVramType)
{

	CLACT_U_RES_OBJ_PTR *res_obj;
	//リソースOBJテーブル検索
	res_obj = PkthlnClAct_GetResObjPtrAdr( cnt_ptr, inResCode, CLACT_U_CHAR_RES );
	(*res_obj) = CLACT_U_ResManagerResAddArcChar(
						cnt_ptr->ResMan[CLACT_U_CHAR_RES],
						inArcID, inArcIdx, FALSE, inResCode,
						inVramType, cnt_ptr->HeapID);
}

//--------------------------------------------------------------------------------------------
/**
 * パレットセット
 *
 * @param	cnt_ptr		アクターコントローラーポインタ
 * @param	inArcID		アクターID
 * @param	inArcIdx	アーカイブインデックス
 * @param	inResCode	リソースコード
 * @param	inVramType	VRAMタイプ
 * @param	inPalNum	パレット数
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetPaltt(	PKTHLN_CLACT_CNT_PTR cnt_ptr,
							const int inArcID, const int inArcIdx,
							const int inResCode, const int inVramType, const u8 inPalNum	)
{
	CLACT_U_RES_OBJ_PTR *res_obj;
	//リソースOBJテーブル検索
	res_obj = PkthlnClAct_GetResObjPtrAdr( cnt_ptr, inResCode, CLACT_U_PLTT_RES );

	(*res_obj) = CLACT_U_ResManagerResAddArcPltt(
						cnt_ptr->ResMan[CLACT_U_PLTT_RES],
						inArcID, inArcIdx, FALSE, inResCode,
						inVramType, inPalNum, cnt_ptr->HeapID);
}

//--------------------------------------------------------------------------------------------
/**
 * セルセット
 *
 * @param	cnt_ptr		アクターコントローラーポインタ
 * @param	inArcID		アクターID
 * @param	inArcIdx	アーカイブインデックス
 * @param	inResCode	リソースコード
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetCell(	PKTHLN_CLACT_CNT_PTR cnt_ptr,
							const int inArcID, const int inArcIdx, const int inResCode	)
{
	CLACT_U_RES_OBJ_PTR *res_obj;
	//リソースOBJテーブル検索
	res_obj = PkthlnClAct_GetResObjPtrAdr( cnt_ptr, inResCode, CLACT_U_CELL_RES );

	(*res_obj) = CLACT_U_ResManagerResAddArcKindCell(
						cnt_ptr->ResMan[CLACT_U_CELL_RES],
						inArcID, inArcIdx,FALSE, inResCode,
						CLACT_U_CELL_RES, cnt_ptr->HeapID);
}

//--------------------------------------------------------------------------------------------
/**
 * アニメセット
 *
 * @param	cnt_ptr		アクターコントローラーポインタ
 * @param	inArcID		アクターID
 * @param	inArcIdx	アーカイブインデックス
 * @param	inResCode	リソースコード
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetAnm(	PKTHLN_CLACT_CNT_PTR cnt_ptr,
							const int inArcID, const int inArcIdx, const int inResCode	)
{
	CLACT_U_RES_OBJ_PTR *res_obj;
	//リソースOBJテーブル検索
	res_obj = PkthlnClAct_GetResObjPtrAdr( cnt_ptr, inResCode, CLACT_U_CELLANM_RES );
	(*res_obj) = CLACT_U_ResManagerResAddArcKindCell(
						cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
						inArcID, inArcIdx, FALSE, inResCode,
						CLACT_U_CELLANM_RES, cnt_ptr->HeapID);
}


//--------------------------------------------------------------------------------------------
/**
 * トランス（一括）
 *
 * @param	cnt_ptr			アクターコントローラーポインタ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_Trans(PKTHLN_CLACT_CNT_PTR cnt_ptr)
{
	int i;
	for (i=0;i<cnt_ptr->SetupPrm.ResCodeMax;i++){
		// Chara転送
		if (cnt_ptr->ResObjTbl[i].ResObjPtrTbl[CLACT_U_CHAR_RES] != NULL){
			CLACT_U_CharManagerSetAreaCont( cnt_ptr->ResObjTbl[i].ResObjPtrTbl[CLACT_U_CHAR_RES] );
		}
		// パレット転送
		if (cnt_ptr->ResObjTbl[i].ResObjPtrTbl[CLACT_U_PLTT_RES] != NULL){
			CLACT_U_PlttManagerSet( cnt_ptr->ResObjTbl[i].ResObjPtrTbl[CLACT_U_PLTT_RES] );
		}
	}
}

//--------------------------------------------------------------------------------------------
/**
 * アクターのセットとゲットを同時に行う
 *
 * @param	cnt_ptr			アクターコントローラーポインタ
 * @param	inBGPriority	BGプライオリティ
 * @param	inDrawArea		描画エリア
 * @param	inResCode		リソースコード
 * @param	inActCode		アクターコード
 *
 * @return	CLACT_WORK_PTR	アクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
PKTHLN_ACT_PTR PkthlnClAct_SetGetActor(PKTHLN_CLACT_CNT_PTR cnt_ptr, const int inBGPriority,
									const NNS_G2D_VRAM_TYPE inDrawArea,
									const u8 inResCode, const u8 inActCode)
{
	PkthlnClAct_SetActor(cnt_ptr, inBGPriority, inDrawArea, inResCode, inActCode);

	return PkthlnClAct_GetActPtr(cnt_ptr, inResCode, inActCode);
}

//--------------------------------------------------------------------------------------------
/**
 * アクターセット
 *
 * @param	cnt_ptr			アクターコントローラーポインタ
 * @param	inBGPriority	BGプライオリティ
 * @param	inDrawArea		描画エリア
 * @param	inResCode		リソースコード
 * @param	inActCode		アクターコード
 *
 * @return	CLACT_WORK_PTR	アクターワークポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR PkthlnClAct_SetActor(PKTHLN_CLACT_CNT_PTR cnt_ptr, const int inBGPriority,
									const NNS_G2D_VRAM_TYPE inDrawArea,
									const u8 inResCode, const u8 inActCode)
{
	CLACT_HEADER			cl_act_header;
	CLACT_WORK_PTR			clact_ptr;

	GF_ASSERT(cnt_ptr->AddPoint < cnt_ptr->SetupPrm.EntryNum);

	// セルアクターヘッダ作成
	CLACT_U_MakeHeader(	&cl_act_header,
						inResCode, inResCode, inResCode, inResCode,
						CLACT_U_HEADER_DATA_NONE, CLACT_U_HEADER_DATA_NONE,
						0, inBGPriority,
						cnt_ptr->ResMan[CLACT_U_CHAR_RES],
						cnt_ptr->ResMan[CLACT_U_PLTT_RES],
						cnt_ptr->ResMan[CLACT_U_CELL_RES],
						cnt_ptr->ResMan[CLACT_U_CELLANM_RES],
						NULL,NULL);

	{
		//登録情報格納
		CLACT_ADD add;

		add.ClActSet	= cnt_ptr->ClActSet;
		add.ClActHeader	= &cl_act_header;
		add.heap		= cnt_ptr->HeapID;
		//↓この辺は後設定できるようにする
		add.mat.x		= 0;
		add.mat.y		= 0;		//画面は上下連続している
		add.mat.z		= 0;
		add.sca.x		= FX32_ONE;
		add.sca.y		= FX32_ONE;
		add.sca.z		= FX32_ONE;
		add.rot			= 0;
		add.pri			= 0;
		add.DrawArea	= inDrawArea;
		//↑

		clact_ptr = CLACT_Add(&add);
		CLACT_SetAnmFlag(clact_ptr,1);
		CLACT_AnmChg( clact_ptr,0 );
		CLACT_SetDrawFlag(clact_ptr, 0);	//非表示

		cnt_ptr->ActPtr[cnt_ptr->AddPoint].Use = 0;
		cnt_ptr->ActPtr[cnt_ptr->AddPoint].Active = 0;
		cnt_ptr->ActPtr[cnt_ptr->AddPoint].ClActWorkPtr = clact_ptr;
		cnt_ptr->ActPtr[cnt_ptr->AddPoint].ActCode = inActCode;
		cnt_ptr->ActPtr[cnt_ptr->AddPoint].ResCode = inResCode;
		cnt_ptr->AddPoint++;
	}

	//開いてる場所にポインタセット
	return clact_ptr;
}

//--------------------------------------------------------------------------------------------
/**
 * 未使用アクター取得
 *
 * @param	cnt_ptr			アクターコントローラーポインタ
 * @param	inResCode		リソース識別コード
 * @param	inActCode		アクター識別コード
 *
 * @return	OBJポインタ
 */
//--------------------------------------------------------------------------------------------
PKTHLN_ACT_PTR PkthlnClAct_GetActPtr(PKTHLN_CLACT_CNT_PTR cnt_ptr, const u8 inResCode, const u8 inActCode)
{
	int i;
	for(i=0;i<cnt_ptr->SetupPrm.EntryNum;i++){
		PKTHLN_ACT_PTR ptr;
		ptr = &cnt_ptr->ActPtr[i];
		if ((ptr->Use == 0)&&(ptr->ResCode == inResCode)&&(ptr->ActCode == inActCode)){
			ptr->Use = 1;
			return ptr;
		}
	}
	GF_ASSERT(0);
	return NULL;
}

//--------------------------------------------------------------------------------------------
/**
 * アクターアクティブセット
 *
 * @param	ptr			アクターポインタ
 * @param	inAcvite	アクティブ状態
 * @param	inVisible	可視／不可視
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetActive(PKTHLN_ACT_PTR ptr, const u16 inActive, const u8 inVisible)
{
	if (ptr->Use){
		if (inActive){
			ptr->Active = 1;
			if (inVisible){
				CLACT_SetDrawFlag(ptr->ClActWorkPtr, 1);	//表示;
			}else{
				CLACT_SetDrawFlag(ptr->ClActWorkPtr, 0);	//非表示;
			}
		}else{
			ptr->Active = 0;
			CLACT_SetDrawFlag(ptr->ClActWorkPtr, 0);	//非表示;
		}
	}else{
		GF_ASSERT(0);
	}
}

//--------------------------------------------------------------------------------------------
/**
 * アニメチェンジ
 *
 * @param	ptr				ポケスロンセルアクターポインタ
 * @param	inIdx	アニメインデックス
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_ChgAnm(PKTHLN_ACT_PTR ptr, const int inIdx)
{
	CLACT_AnmChg( ptr->ClActWorkPtr, inIdx );
}

//--------------------------------------------------------------------------------------------
/**
 * アニメチェンジ
 *
 * @param	ptr				ポケスロンセルアクターポインタ
 * @param	inIdx	アニメインデックス
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_ChgAnmCheck(PKTHLN_ACT_PTR ptr, const int inIdx)
{
	CLACT_AnmChgCheck( ptr->ClActWorkPtr, inIdx );
}

//--------------------------------------------------------------------------------------------
/**
 * アニメ中かをチェック
 *
 * @param	ptr		ポケスロンセルアクターポインタ
 *
 * @return	BOOL	TRUE:アニメ中
 */
//--------------------------------------------------------------------------------------------
BOOL PkthlnClAct_AnmActiveCheck(PKTHLN_ACT_PTR ptr)
{
	return CLACT_AnmActiveCheck( ptr->ClActWorkPtr );
}

//--------------------------------------------------------------------------------------------
/**
 * 座標セット
 *
 * @param	ptr				ポケスロンセルアクターポインタ
 * @param	inVec			座標
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetPos(PKTHLN_ACT_PTR ptr, const VecFx32 *inVec)
{
	CLACT_SetMatrix(ptr->ClActWorkPtr, inVec);
}

//--------------------------------------------------------------------------------------------
/**
 * 座標取得
 *
 * @param	ptr				ポケスロンセルアクターポインタ
 *
 * @return	VecFx32	*		座標
 */
//--------------------------------------------------------------------------------------------
const VecFx32 *PkthlnClAct_GetPos(PKTHLN_ACT_PTR ptr)
{
	return CLACT_GetMatrix(ptr->ClActWorkPtr);
}

//--------------------------------------------------------------------------------------------
/**
 * アフィンパラメータセット
 *
 * @param	ptr				ポケスロンセルアクターポインタ
 * @param	inScale			スケール
 * @param	inAffine		アフィンパラメータ
 * affineフラグ
 *	enum{
 *		CLACT_AFFINE_NONE,		// アフィン変換なし
 *		CLACT_AFFINE_NORMAL,	// アフィン変換
 *		CLACT_AFFINE_DOUBLE,	// 倍角アフィン変換
 *	};
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetScaleAffine(PKTHLN_ACT_PTR ptr, const VecFx32* inScale, const int inAffine)
{
	CLACT_SetScaleAffine(ptr->ClActWorkPtr, inScale, inAffine);
}

//--------------------------------------------------------------------------------------------
/**
 * アフィンパラメータセット
 *
 * @param	ptr				ポケスロンセルアクターポインタ
 * @param	inRot			回転角　0〜65535
 * @param	inAffine		アフィンパラメータ
 * affineフラグ
 *	enum{
 *		CLACT_AFFINE_NONE,		// アフィン変換なし
 *		CLACT_AFFINE_NORMAL,	// アフィン変換
 *		CLACT_AFFINE_DOUBLE,	// 倍角アフィン変換
 *	};
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetRotationAffine(PKTHLN_ACT_PTR ptr, const u16 inRot, const int inAffine)
{
	CLACT_SetRotationAffine(ptr->ClActWorkPtr, inRot, inAffine);
}

//--------------------------------------------------------------------------------------------
/**
 * アフィンパラメータセット
 *
 * @param	ptr				ポケスロンセルアクターポインタ
 * @param	inAffine		アフィンパラメータ
 * affineフラグ
 *	enum{
 *		CLACT_AFFINE_NONE,		// アフィン変換なし
 *		CLACT_AFFINE_NORMAL,	// アフィン変換
 *		CLACT_AFFINE_DOUBLE,	// 倍角アフィン変換
 *	};
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetAffine(PKTHLN_ACT_PTR ptr, const int inAffine)
{
	CLACT_SetAffineParam(ptr->ClActWorkPtr, inAffine);
}

//--------------------------------------------------------------------------------------------
/**
 * セルアクターポインタを返す
 *
 * @param	ptr				ポケスロンセルアクターポインタ
 *
 * @return	CLACT_WORK_PTR	セルアクターポインタ
 */
//--------------------------------------------------------------------------------------------
CLACT_WORK_PTR PkthlnClAct_GetClActWorkPtr(PKTHLN_ACT_PTR ptr)
{
	return ptr->ClActWorkPtr;
}

//--------------------------------------------------------------------------------------------
/**
 * 描画関数
 *
 * @param	cnt_ptr			ポケモンアクターコントローラーポインタ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_Draw(PKTHLN_CLACT_CNT_PTR cnt_ptr)
{
	CLACT_Draw( cnt_ptr->ClActSet );
}

//--------------------------------------------------------------------------------------------
/**
 * 上下画面の距離設定
 *
 * @param	cnt_ptr		アクターコントローラーポインタ
 * @param	inMX		メインX
 * @param	inMY		メインY
 * @param	inSX		サブX
 * @param	inSY		サブY
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetDispDistance(	PKTHLN_CLACT_CNT_PTR cnt_ptr,
									const fx32 inMX, const fx32 inMY,
									const fx32 inSX, const fx32 inSY )
{
	CLACT_U_SetSubSurfaceMatrix( &cnt_ptr->RendData, inSX, inSY );
	CLACT_U_SetMainSurfaceMatrix( &cnt_ptr->RendData, inMX, inMY );
}

//--------------------------------------------------------------------------------------------
/**
 * アクターセットアドレス取得
 *
 * @param	cnt_ptr		アクターコントローラーポインタ
 *
 * @return	セルセット
 */
//--------------------------------------------------------------------------------------------
CLACT_SET_PTR PkthlnClAct_GetClActSetAdr(PKTHLN_CLACT_CNT_PTR cnt_ptr)
{
	return cnt_ptr->ClActSet;
}

//--------------------------------------------------------------------------------------------
/**
 * リソースOBJポインタアドレス取得
 *
 * @param	cnt_ptr		アクターコントローラーポインタ
 * @param	inResCode	リソースコード
 * @param	inResIdx	リソースインデックス
 *
 * @return	CLACT_U_RES_OBJ_PTR
 */
//--------------------------------------------------------------------------------------------
CLACT_U_RES_OBJ_PTR * PkthlnClAct_GetResObjPtrAdr(	PKTHLN_CLACT_CNT_PTR cnt_ptr,
													const int inResCode, const u8 inResIdx )
{
	int i;

	GF_ASSERT( inResIdx < RESOURCE_NUM );

	for(i=0;i<cnt_ptr->SetupPrm.ResCodeMax;i++){
		if ( cnt_ptr->ResObjTbl[i].Code == inResCode){
			return &(cnt_ptr->ResObjTbl[i].ResObjPtrTbl[inResIdx]);
		}
	}

	GF_ASSERT(0);

	return NULL;
}

//--------------------------------------------------------------------------------------------
/**
 * プライオリティセット
 *
 * @param	ptr		アクターコントローラーポインタ
 * @param	inPriority	プライオリティ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_SetPriority(PKTHLN_ACT_PTR ptr, const u32 inPriority)
{
	CLACT_DrawPriorityChg(ptr->ClActWorkPtr, inPriority);
}

//--------------------------------------------------------------------------------------------
/**
 * 全アニメーション停止コントロール
 *
 * @param	cnt_ptr		アクターコントローラーポインタ
 * @param	inStop		停止フラグ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
void PkthlnClAct_AllAnmStop(PKTHLN_CLACT_CNT_PTR cnt_ptr, const u8 inStop)
{
	int i;
	for(i=0;i<cnt_ptr->SetupPrm.EntryNum;i++){
		PKTHLN_ACT_PTR ptr;
		ptr = &cnt_ptr->ActPtr[i];
		if ( ptr->Use ){
			CLACT_WORK_PTR clact_ptr;
			//アニメ停止
			clact_ptr = PkthlnClAct_GetClActWorkPtr(ptr);
			CLACT_SetAnmFlag(clact_ptr, !inStop);
		}
	}
}
